<?php namespace Common\Model;
use Hdphp\Model\Model;

/*
 * 分类表
 * $this->create()
 * 获得数据，自动验证
 */

class Cate extends Model{
//指定表名
    protected $table = "category";
//  错误提示    
    protected $validate = array(
        array('cname','required','分类名称不能为空',3,3)
    );
//  分类添加
    public function store(){
        if(!$this->create()){
        	return FALSE;
        }
       	Cache::del('allCate');
        return  $this->add();
    }
	
//	编辑
	public function edit(){
	    if(!$this->create()) return FALSE;
		$this->save();
		return TRUE;
	}
	
//	获得除了自己和自己子集的分类数据
	public function getNoMy(){
//		1.获得自己的自己cid $this->get()获得这个表(category)的所有数据
		$cids = $this->getSon($this->get(),$cid);
//		将所有数据压人到自己的cid    
		$cids[]= $cid;
	
//		2.筛选子集和子集的cid的数据
		$where = "cid NOT IN(" .implode(',', $cids). ")";
//		3.返回除了自己和子集的所有数据
		return $this->where($where)->get();
	
	}
	
	public function getSon($data,$cid){
//	    创建空数组，用于压入数据(递归查找的数据)
		$temp = array();
//		循环库里的数据
		foreach($data as $v) {
//			获得当前分类的子集
			if($v['pid']==$cid){
				$temp[] = $v['cid'];
//				因为需要查询自己的子集，所以需要使用递归调用$v数据，然后合并到数组
				$temp = array_merge($temp,$this->getSon($data,$v['cid']));
			}
		}
//		返回最终结果
		return $temp;
	}
	
	/**
	 * 获得分类的所有数据
	 */
	 public function getAll(){
	 	//读取缓存
	 	$cateData = Cache::get('allCate');
		//如果缓存失效
		if(!$cateData){
			//查询数据库
			$cateData = $this->get();
//		 	p($cateData);
			$cateData = Data::tree($cateData,'cname');
			//生成缓存,时间为永久
			Cache::set('allCate',$cateData);
		}
			return $cateData;
	 }
	 
}